﻿namespace SimpleAdmin.Web.Core
{
    /// <summary>
    /// B端登录控制器
    /// </summary>
    [ApiDescriptionSettings(Tag = "B端权限校验")]
    [Route("sys/auth/b")]
    public class AuthBController : BaseController
    {
        private readonly IAuthService _authService;

        public AuthBController(IAuthService authService)
        {
            _authService = authService;
        }

        /// <summary>
        /// B端获取图片验证码
        /// </summary>
        /// <returns></returns>
        [HttpGet("getPicCaptcha")]
        [AllowAnonymous]
        public async Task<dynamic> GetPicCaptcha()
        {
            return await _authService.GetCaptchaInfo();
        }

        /// <summary>
        /// B端获取手机验证码
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [HttpGet("getPhoneValidCode")]
        [AllowAnonymous]
        public async Task<dynamic> GetPhoneValidCode([FromQuery] GetPhoneValidCodeInput input)
        {
            return await _authService.GetPhoneValidCode(input, LoginClientTypeEnum.B);
        }

        /// <summary>
        /// B端登录
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [AllowAnonymous]
        [HttpPost("login")]
        [DisplayName(EventSubscriberConst.LOGIN_B)]
        public async Task<dynamic> Login(LoginInput input)
        {
            return await _authService.Login(input, LoginClientTypeEnum.B);
        }

        /// <summary>
        /// B端手机号登录
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [AllowAnonymous]
        [HttpPost("loginByPhone")]
        public async Task<dynamic> LoginByPhone(LoginByPhoneInput input)
        {
            return await _authService.LoginByPhone(input, LoginClientTypeEnum.B);
        }

        /// <summary>
        /// 登出
        /// </summary>
        /// <returns></returns>
        [HttpPost("logout")]
        [DisplayName(EventSubscriberConst.LOGIN_OUT_B)]
        public async Task LoginOut([FromBody] LoginOutInput input)
        {
            await _authService.LoginOut(input.Token, LoginClientTypeEnum.B);
        }

        /// <summary>
        /// 获取用户信息
        /// </summary>
        /// <returns></returns>
        [HttpGet("getLoginUser")]
        public async Task<dynamic> GetLoginUser()
        {
            return await _authService.GetLoginUser();
        }
    }
}
